<?php
/* *
 * 功能：支付宝服务器异步通知页面
 * 版本：3.3
 * 日期：2012-07-23
 * 说明：
 * 以下代码只是为了方便商户测试而提供的样例代码，商户可以根据自己网站的需要，按照技术文档编写,并非一定要使用该代码。
 * 该代码仅供学习和研究支付宝接口使用，只是提供一个参考。


 *************************页面功能说明*************************
 * 创建该页面文件时，请留心该页面文件中无任何HTML代码及空格。
 * 该页面不能在本机电脑测试，请到服务器上做测试。请确保外部可以访问该页面。
 * 该页面调试工具请使用写文本函数logResult，该函数已被默认关闭，见alipay_notify_class.php中的函数verifyNotify
 * 如果没有收到该页面返回的 success 信息，支付宝会在24小时内按一定的时间策略重发通知
 */

require_once("/var/www/html/new/com.inc.php");
require_once("/var/www/html/alipay/alipay.config.php");
require_once("/var/www/html/alipay/lib/alipay_notify.class.php");

//计算得出通知验证结果
$alipayNotify = new AlipayNotify($alipay_config);
$verify_result = $alipayNotify->verifyNotify();

if($verify_result) {//验证成功
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	//请在这里加上商户的业务逻辑程序代

	
	//——请根据您的业务逻辑来编写程序（以下代码仅作参考）——
	
    //获取支付宝的通知返回参数，可参考技术文档中服务器异步通知参数列表
	
	//商户订单号
	$out_trade_no = $_POST['out_trade_no'];

	//支付宝交易号
	$trade_no = $_POST['trade_no'];

	//交易状态
	$trade_status = $_POST['trade_status'];

	
    if($_POST['trade_status'] == 'TRADE_FINISHED') {
		//判断该笔订单是否在商户网站中已经做过处理
			//如果没有做过处理，根据订单号（out_trade_no）在商户网站的订单系统中查到该笔订单的详细，并执行商户的业务程序
			//如果有做过处理，不执行商户的业务程序
				
		//注意：
		//该种交易状态只在两种情况下出现
		//1、开通了普通即时到账，买家付款成功后。
		//2、开通了高级即时到账，从该笔交易成功时间算起，过了签约时的可退款时限（如：三个月以内可退款、一年以内可退款等）后。

        //调试用，写文本函数记录程序运行情况是否正常
        logResult("1:$trade_no:$out_trade_no:$trade_status\n");
    }
    else if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
		//判断该笔订单是否在商户网站中已经做过处理
			//如果没有做过处理，根据订单号（out_trade_no）在商户网站的订单系统中查到该笔订单的详细，并执行商户的业务程序
			//如果有做过处理，不执行商户的业务程序
				
		//注意：
		//该种交易状态只在一种情况下出现——开通了高级即时到账，买家付款成功后。

        //调试用，写文本函数记录程序运行情况是否正常
        //logResult("这里写入想要调试的代码变量值，或其他运行的结果记录");
		
		$ac=$GLOBALS['_ac'];
		$pw=$GLOBALS['_pw'];
		$s = new SoapClient(null,array("location" => "http://localhost/open/openService/pft_insideMX.php","uri" => "www.16u.com?ac_16u=$ac|pw_16u=$pw|auth_16u=true"));
		
		 
		$str="select status,royalty_parameters,total_fee from pft_alipay_rec where out_trade_no='$out_trade_no'";
		$GLOBALS['le']->query($str);
		$GLOBALS['le']->fetch_assoc();
		$status=$GLOBALS['le']->f('status');
		$royalty_parameters=$GLOBALS['le']->f('royalty_parameters');
		$total_fee=$GLOBALS['le']->f("total_fee");
		if($GLOBALS['le']->f('status')!=1){
			$str="update pft_alipay_rec set status=1,dtime=now() where out_trade_no='$out_trade_no' limit 1";
			$GLOBALS['le']->query($str);
			$ordern=$out_trade_no;
			require("/var/www/html/new/d/class/OrderRecord.php");
		    $or=new OrderRecord($ordern,$s);
			$orders=$or->info();
			$mainOrder=$orders['mainOrder'];
			$mid=(string)$mainOrder->UUmid;
			$aid=(string)$mainOrder->UUaid;
			
			/***产品多级销售分润*****/
			$str="select * from uu_order_fx_details where orderid='$ordern'";
			$GLOBALS['le']->query($str);
			$lirun=$GLOBALS['le']->fetch_assoc();
			if($lirun['aids_money']){
				$aids_money=unserialize($lirun['aids_money']);
				$opID=0;
				foreach($aids_money as $row){
					$fid=$row[0];
					$action=($row[2]==0)?1:0;//0减少,1增加和接口相反
					$Mmoney=$row[3];
					if($row[1]==0){//信用额度
						$dmode=1;
						$s->PFT_Member_Fund_Modify($fid,$opID,$Mmoney,$action,$dmode,$row[4],0,2,$ordern);
					}else{//资金
						$dmode=0;
						$s->PFT_Member_Fund_Modify($fid,$opID,$Mmoney,$action,$dmode,NULL,0,0,$ordern);
					}
				}
			}
			
			/*重发短信*/
			$s->reSend_SMS_Global_PL($ordern,$aid,$mid);//最后重发短信
			
			/*记录分销商分润流向*/
			$royalty_parameters=explode("|",$royalty_parameters);
			$i=0;
			foreach($royalty_parameters as $row){
				$about=explode("^",$row);
				$money=$about[1]*100;
				$total_fee*=100;
				$ali_account=$about[0];
				$orderid=$ordern;
				$fid=($i++==0)?$aid:$mid;
				$str="insert pft_member_alipay set fid=$fid,orderid='$orderid',total_fee=$total_fee,money=$money,ali_account='$ali_account',rectime=now()";
				$GLOBALS['le']->query($str);
			}
			
			/*只更新订单支付状态*/
			include("/var/www/html/alipay/order_pay.php");
		}
    }

	//——请根据您的业务逻辑来编写程序（以上代码仅作参考）——
        
	echo "success";		//请不要修改或删除
	logResult("2:$trade_no:$out_trade_no:$trade_status\n");
	
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}
else {
    //验证失败
    echo "fail";
	logResult("3:$trade_no:$out_trade_no:$trade_status\n");

    //调试用，写文本函数记录程序运行情况是否正常
    //logResult("这里写入想要调试的代码变量值，或其他运行的结果记录");
}
?>